背景
帮助文档的 pdf
和 word
导出,基于 python
生成,所以需要在服务器上搭建相应的环境。
pandoc
Pandoc
是一个用于文本转换的开源工具,可以将一个文档从一种格式转换为另一种格式。它支持的输入格式包括 Markdown
、HTML
、LaTeX
和 docx
等,输出格式包括 HTML
、LaTeX
、docx
、PDF
等。
下载地址:https://github.com/jgm/pandoc/releases
这里下载的是 pandoc-3.1.4-linux-amd64.tar.gz
mkdir -p /opt/pandoc
cd /opt/pandoc
# 上传压缩包
tar -xvf pandoc-3.1.4-linux-amd64.tar.gz
ln -sf /opt/pandoc/pandoc-3.1.4/bin/pandoc /usr/bin/pandoc
pandoc -v
Ruby
Ruby
是一种动态、面向对象的编程语言。asciidoctor
依赖它。
离线安装(推荐)
安装包下载地址(下载 2.7 以上版本):https://www.ruby-lang.org/en/downloads/releases/
mkdir -p /opt/ruby
cd /opt/ruby/
// 上传安装包
tar -zvxf ruby-2.7.7.tar.gz
cd ruby-2.7.7
// 进行编译安装
./configure --prefix=/usr/local/ruby
make && make install
// 建立软链,覆盖系统默认的 2.0 ruby 版本
ln -sf /usr/local/ruby/bin/ruby /usr/bin/ruby
在线安装
先确认是否安装了 rvm
,rvm
是用来管理 ruby
版本的工具。
rvm
# 下载 gpg 公钥
gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -L get.rvm.io | bash -s stable
ln -sf /usr/local/rvm/bin/rvm /usr/bin/rvm
rvm -v
安装/升级 ruby
rvm install ruby // 安装最新版本
rvm install 2.7.2 // 安装指定版本的
升级报错
[root@172-16-82-102 ~]# rvm install 2.7.1
Already installed ruby-2.7.1.
To reinstall use:
rvm reinstall ruby-2.7.1
-bash: cat: 未找到命令
安装导致环境变量被覆盖,导致 /usr/bin/
环境变量缺失。
加入 /usr/bin/
的信息恢复正常。
export PATH=$PATH:/usr/bin/
asciidoctor
Asciidoctor
是一个用于文本转换的开源工具,可以将一个文档从 Asciidoc
格式转换为 HTML
、PDF
、ePub
和其他格式。Asciidoctor
是 Ruby
编写的
gem install asciidoctor
asciidoctor-pdf
Asciidoctor PDF
是 Asciidoctor
的一个插件,可以将 Asciidoc
文档转换为 PDF
格式。
ruby version ≥ 2.7
gem install asciidoctor-pdf
安装后找不到
报错如下:
[root@172-16-82-102 ~]# asciidoctor-pdf -v
-bash: asciidoctor-pdf: 未找到命令
可采用 gem which 查看安装地址,建立软链
[root@172-16-82-102 ~]# gem which asciidoctor-pdf
/usr/local/ruby/lib/ruby/gems/2.7.0/gems/asciidoctor-pdf-2.3.8/lib/asciidoctor-pdf.rb
[root@172-16-82-102 ~]# ln -sf /usr/local/ruby/lib/ruby/gems/2.7.0/gems/asciidoctor-pdf-2.3.8/bin/asciidoctor-pdf /usr/bin/asciidoctor-pdf
python3
python2
与 python3
存在语法差异,使用 python2
执行会报以下错误,且 python2
官方不在维护,
File "./convert2adoc/convert2adoc.py", line 40
SyntaxError: Non-ASCII character '\xef' in file ./convert2adoc/convert2adoc.py on line 40, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
离线安装 python3
// 下载 python3
mkdir -p /opt/python3
cd /opt/python3/
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
tar -xvf Python-3.9.5.tar.xz
cd Python-3.9.5/
// 安装
./configure --prefix=/usr/local/python3
make && make install
// 增加 python3 的软连接
ln -sf /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -sf /usr/local/python3/bin/python3.9-config /usr/bin/python-config
pip
// 增加 pip 的软连接
ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3
ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip
切换国内源
mkdir -p ~/.pip
vim ~/.pip/pip.conf
写入内容:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
安装报错
提示以“root”
用户身份运行 pip
可能会导致权限损坏和冲突,
WARNING: Running pip as the ‘root‘ user can result in broken permissions and conflicting
解决方案是建立一个虚拟环境:
[root@172-16-82-102 jm]# pip -V
pip 23.1.2 from /usr/local/python3/lib/python3.9/site-packages/pip (python 3.9)
[root@172-16-82-102 jm]# cd /usr/local/python3/lib/python3.9/site-packages/pip # 进入安装地址
[root@172-16-82-102 pip]# python -m venv tutorial-env
[root@172-16-82-102 pip]# source tutorial-env/bin/activate
(tutorial-env) [root@172-16-82-102 pip]#
安装参考:
(tutorial-env) [root@172-16-82-102 pip]# pip install pyyaml
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Requirement already satisfied: pyyaml in ./tutorial-env/lib/python3.9/site-packages (6.0)
(tutorial-env) [root@172-16-82-102 pip]# pip install esprima
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting esprima
Using cached esprima-4.0.1-py3-none-any.whl
Installing collected packages: esprima
二次进入虚拟环境 先进入 pip 安装路径,再进入
[root@172-16-82-102 ~]# cd /usr/local/python3/lib/python3.9/site-packages/pip
[root@172-16-82-102 pip]# source tutorial-env/bin/activate
安装 yaml
需先进入虚拟环境
pip install yaml
安装 esprima
需先进入虚拟环境
pip install esprima